﻿using ConfExpert.Forms.Base;
using ConfExpert.Utility;
using DevTeam;


using System;
using System.Data;
using System.Drawing;
using System.IO;
using System.Windows.Forms;

namespace ConfExpert.Forms.Aksesuar
{
    public partial class AksesuarSatinalmaTalebi : XForm
    {
        DataTable EksikAksesuar;

        public AksesuarSatinalmaTalebi(DataTable eksikAksesuar)
        {
            InitializeComponent();
            EksikAksesuar = eksikAksesuar.Select("Isnull(QtyRevised,QtySelected)>0 and Onay=1").CopyToDataTable();
        }

        private void AksesuarSatinalmaTalebi_Load(object sender, EventArgs e)
        {


            EksikAksesuar.Columns["BrandId"].ColumnName = "Marka";

            EksikAksesuar.Columns.Add("Sec", typeof(bool));

            foreach (DataRow dr in EksikAksesuar.Rows)
                dr["Sec"] = 1;

            EksikAksesuar.Columns.Add("TransferEdilen", typeof(int), "Isnull(QtyRevised,QtySelected)");
            EksikAksesuar.Columns.Add("TalepEdilen", typeof(int), "Isnull(QtyRevised,QtySelected)");
            EksikAksesuar.Columns.Add("TerminTarihi", typeof(DateTime));
            EksikAksesuar.Columns.Add("Notlar", typeof(string));
            gvTreeLines.Init(EksikAksesuar);

            gvTreeLines.MakeColumnInvisible("Onay", "OwnerId", "OnaylayanId", "CevapTarihi", "AyrimId", "O", "R", "I", "QtyRevised", "QtySelected");
            gvTreeLines.AddSummary("TalepEdilen", "TransferEdilen");
            gvTreeLines.FormatAsNumber(0, "TalepEdilen", "TransferEdilen");
            gvTreeLines.MakeReadOnly("Sec", "TalepEdilen", "TerminTarihi", "Notlar", "SezonId", "OrderRef");

            gvTreeLines.Columns["Marka"].ColumnEdit = RI(Rp.Brand);

            gvTreeLines.YanYanaGetir("TerminTarihi:Notlar", "Sec:AksesuarIstekId");


            bbiPO.ItemClick += bbiPO_ItemClick;
            gvTreeLines.RowCellStyle += gvTreeLines_RowCellStyle;
            gvTreeLines.RowStyle += gvTreeLines_RowStyle;

            gvTreeLines.OptionsView.EnableAppearanceOddRow =
            gvTreeLines.OptionsView.EnableAppearanceEvenRow = false;

            gvTreeLines.BestFitColumns();
            gvTreeLines.Columns["Notlar"].Width = 100;

        }

        void gvTreeLines_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e)
        {
            if (e.RowHandle > -1)
            {
                bool IsSelected = gvTreeLines.GetRowCellValue(e.RowHandle, "Sec").ToBool();
                if (!IsSelected)
                {
                    e.Appearance.BackColor = Color.LightGray;
                    e.Appearance.ForeColor = Color.Gray;
                }
            }
        }

        void bbiPO_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            gvTreeLines.EndEditing();
            gvTreeLines.CloseEditor();
            ((BindingSource)gvTreeLines.DataSource).EndEdit();

            DataRow[] drPO = gvTreeLines.DataTable().Select("Isnull(Sec,0) = 1 and Isnull(TalepEdilen,0) > 0");
            if (drPO.Length == 0)
            {
                ShowErrorMessage("Lütfen satınalma yapacağınız aksesuarların en soldaki SEÇ kutucuğunu işaretleyin !");
                return;
            }

            DataTable dtPO = drPO.CopyToDataTable();
            dtPO.TableName = "EksikAksesuar";

            int lenBosTermin = dtPO.Select("Isnull(TalepEdilen,0)>0 and TerminTarihi is null").Length;


            if (lenBosTermin > 0)
            {
                ShowErrorMessage("Lütfen termin alanını boş bırakmayın");
                return;
            }

            string xml = dtPO.Serialize();
            DataTable dtAkspo = ExecuteDataTable("InsAksesuarPOByIstek", WhoAmI, xml);

            string AkspoIds = "";
            foreach (DataRow dr in dtAkspo.Rows)
            {
                string AkspoId = dr["AkspoId"].ToStr();
                string SipNo = dr["SipNo"].ToStr();
                string To = dr["Email"].ToStr();
                string Cc = Session.CurrentUser.Email;
                string Subject = "Aksesuar Ayrım İsteğine Bağlı Satınalma Talebi." + SipNo;
                string Body = "Sn. " + dr["Name"].ToStr() + "<br><br> Yaptığınız aksesuar isteğine bağlı bir satınalma talebi oluşturuldu. <br><br> Föy ektedir. ";

                Rapor.Aksesuar.xrAksesuarSiparisFoy asf = new Rapor.Aksesuar.xrAksesuarSiparisFoy(AkspoId, "GetAksesuarSiparisFoyu", "AksPOId");
                MemoryStream ms = new MemoryStream();
                asf.ExportToPdf(ms);
                byte[] foyPdf = ms.ToArray();

                //ExecuteScalar("SendMailIstekToAksPO", To, Cc, Subject, Body, foyPdf, SipNo + ".pdf");
                Mail.Send(To, Subject, Body, Cc, foyPdf, SipNo + ".pdf", "");

                AkspoIds += AkspoId + ",";
            }

            AkspoIds = AkspoIds.RemoveIfEndsWith(",");
            ShowInfoMessage(AkspoIds + " numaralı satınalma talep / talepleriniz oluştu. Aksesuar satınalma takibini Aksesuar -> Talep Listesi ekranından yapabilirsiniz.");
            this.DialogResult = DialogResult.OK;
        }

        void gvTreeLines_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
        {
            if (e.RowHandle > -1)
            {
                switch (e.Column.FieldName)
                {
                    case "Marka":
                    case "SezonId":
                    case "OrderRef":
                        e.Appearance.Font = new Font(DevExpress.Utils.AppearanceObject.DefaultFont, FontStyle.Bold);
                        break;


                    case "TalepEdilen":
                        e.Appearance.Font = new Font(DevExpress.Utils.AppearanceObject.DefaultFont, FontStyle.Bold);
                        e.Appearance.ForeColor = Color.Red;
                        break;


                    case "TerminTarihi":
                    case "Notlar":
                        e.Appearance.BackColor = Color.LightPink;
                        break;
                }
            }
        }
    }
}